home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs47.d81
/
64alv2a.sfx
/
lynx dissolve
(
.txt
)
< prev
Wrap
Commodore BASIC
|
1990-02-12
|
6KB
|
268 lines
1 POKE 53280,11:POKE 53281,12:PRINT "[147]";CHR$(142)
2 PRINT TAB(12) "[151]LYNX DECOMPILER"
3 PRINT TAB(12) "[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163]"
4 PRINT TAB(9) "(C) 1989 WILL CORLEY"
5 DIM S$(5),T$(145),PN$(145),FT(145),FS(145),BL(145),LN(145)
6 DIM RT(145),RL(145),RS(145),LT(145),LS(145),ZT(145),ZS(145)
7 DIM BT(6,120),BS(6,120),TS(6),SS(6)
8 K$=CHR$(0)
9 SD$=" 8=SOURCE DRIVE":SD=VAL(SD$)
10 BA=193*256:TEM=49152
11 FOR X=0 TO 40:READ Y:POKE X+TEM,Y:NEXT X
12 HD$="":FOR X=1 TO 94:READ Y:HD$=HD$+CHR$(Y):NEXT X
13 INPUT "INSERT DISK";A$
14 OPEN 15,SD,15,"I0":GOSUB 229
15 OPEN 2,SD,2,"#":GOSUB 229
16 T=18:S=1:N=0:BT=N:W=N
17 PRINT "[145][Y[146]][151]ES [N[146]][151]O [A[146]][151]UTO [G[146]][151]O [E[146]][151]XIT"
18 GOSUB 176:X=0
19 ZX=X*32:F$="":C=PEEK(BA+2+ZX)
20 IF (C AND 128)<> 128 THEN 41
21 C=(C AND 15):IF C=0 THEN 41
22 IF (C=3 OR C=4) THEN 41
23 GOSUB 179
24 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX)
25 GOSUB 184
26 Y=1
27 IF MID$(F$,Y,4)=".LNX" THEN 30
28 Y=Y+1:IF Y>13 THEN 41
29 GOTO 27
30 GOSUB 187
31 POKE 212,1:PRINT F$:POKE 212,0
32 PRINT "[145]";TAB(17) T$
33 IF W=1 THEN A$="Y":GOTO 35
34 POKE 198,0:WAIT 198,1:GET A$
35 IF A$="Y" THEN X=8:T=0
36 IF A$="G" THEN PRINT "[145][145]":GOTO 43
37 IF A$="A" THEN W=1:GOTO 33
38 IF A$="E" THEN CLOSE 2:CLOSE 15:END
39 IF A$<>"Y" THEN PRINT "[145][145]":GOTO 41
40 GOSUB 189
41 X=X+1:IF X<8 THEN 19
42 IF T<>0 THEN 18
43 CLOSE 2:CLOSE 15
44 PRINT " "
45 OPEN 15,SD,15,"UJ"
46 TI$="000000":WAIT 162,128
47 GET#15,A$:IF ST<>64 THEN 47
48 CLOSE 15
49 IF N=0 THEN END
50 GETA$:IF A$="E" THEN END
51 BL(N+1)=0
52 GOSUB 247:OPEN 15,SD,15,"I0":GOSUB 229
53 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R"
54 GOSUB 229
55 PRINT "READING HEADER"
56 BL=BL(1):B$=""
57 IF ZR=0 THEN 60
58 GET#2,A$:A$=CHR$(ASC(A$+K$)):IF A$<>CHR$(13) THEN B$=B$+A$:GOTO 58
59 IF B$<>HD$ THEN 244
60 GOSUB 239:BL(1)=VAL(A$):BV=VAL(A$)
61 INPUT#2,N:N=N+1
62 FOR X=2 TO N
63 PN$(X)="":Y=1
64 GET#2,D$:IF ASC(D$)=13 THEN 66
65 PN$(X)=PN$(X)+D$:Y=Y+1:IF Y<18 THEN 64
66 INPUT#2,BL(X):BV=BV+BL(X):INPUT#2,T$(X)
67 IF T$(X)="R" THEN INPUT#2,RL(X)
68 IF (RZ=0 AND X=N) THEN 70
69 INPUT#2,LN(X)
70 NEXT X
71 GOSUB 229:CLOSE 2:CLOSE 15
72 IF BV=BL OR BV=BL-1 THEN 74
73 GOTO 226
74 PRINT
75 OPEN 15,SD,15,"I0":GOSUB 229:OPEN 2,SD,2,"#":GOSUB 229
76 T=FT(1):S=FS(1)
77 FOR Z=1 TO N:PRINT "UNLINKING "PN$(Z)
78 IF BL(Z)=0 THEN 93
79 IF T$(Z)="R" THEN 128
80 IF (Z=N AND RZ=0) THEN 93
81 FOR X=1 TO BL(Z)
82 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
83 T1=T:S1=S
84 GET#2,D$:T=ASC(D$+K$)
85 GET#2,D$:S=ASC(D$+K$)
86 NEXT X
87 Y=Z+1
88 IF BL(Y)<>0 THEN FT(Y)=T:FS(Y)=S:GOTO 90
89 Y=Y+1:IF Y<N+1 THEN 88
90 PRINT#15,"B-P";2;0
91 PRINT#2,K$;CHR$(LN(Z));
92 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
93 NEXT Z
94 CLOSE2:PRINT#15,"I0":GOSUB 229:PRINT#15,"S0:"+PN$(1)
95 GOSUB 229:PRINT#15,"I0":GOSUB 229:OPEN 2,SD,2,"#":GOSUB 229
96 PRINT "WRITING DIRECTORY"
97 T=18:S=1:BT=0
98 GOSUB 176
99 FOR X=0 TO 7:ZX=X*32:F$="":C=PEEK(BA+2+ZX)
100 IF (C AND 128)<> 128 THEN 107
101 C=(C AND 15):IF C=0 THEN 107
102 GOSUB 179
103 DT=PEEK(BA+3+ZX):DS=PEEK(BA+4+ZX)
104 GOSUB 184
105 GOSUB 187
106 GOSUB 189
107 NEXT X
108 IF T<>0 THEN 98
109 Z=2
110 C$=K$+K$+K$+K$+K$+K$:ND=1
111 A$=""
112 FOR X=0 TO 7
113 IF BL(Z)=0 THEN FT(Z)=18:FS(Z)=1
114 IF T$(Z)="S" THEN D=129
115 IF T$(Z)="P" THEN D=130
116 IF T$(Z)="U" THEN D=131
117 IF T$(Z)="R" THEN D=132
118 A$=A$+CHR$(D)+CHR$(FT(Z))+CHR$(FS(Z))+PN$(Z)
119 GOSUB 200
120 IF T$(Z)="R" THEN B$=CHR$(RT(Z))+CHR$(RS(Z))+CHR$(RL(Z))
121 GOSUB 207
122 IF Z>N THEN 124
123 NEXT X
124 GOSUB 213
125 IF Z>N THEN CLOSE 2:GOTO 127
126 GOTO 111
127 CLOSE 15:END
128 GOSUB 233:RT(Z)=T:RS(Z)=S
129 FOR X=1 TO SS:TS(X)=T:SS(X)=S
130 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
131 T1=T:S1=S
132 GET#2,D$:T=ASC(D$+K$)
133 GET#2,D$:S=ASC(D$+K$)
134 NEXT X
135 FT(Z)=T:FS(Z)=S
136 PRINT#15,"B-P";2;0
137 PRINT#2,K$;K$;
138 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
139 RR=1
140 SN=1
141 FOR X=1 TO BL(Z)-SS
142 BT(SN,RR)=T:BS(SN,RR)=S
143 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0
144 T1=T:S1=S
145 GET#2,D$:T=ASC(D$+K$)
146 GET#2,D$:S=ASC(D$+K$)
147 RR=RR+1:IF RR>120 THEN SN=SN+1:RR=1
148 NEXT X
149 RR=RR-1:IF RR=0 THEN RR=120
150 Y=Z+1
151 IF BL(Y)<>0 THEN 154
152 Y=Y+1:IF Y<N+1 THEN 151
153 GOTO 155
154 FT(Y)=T:FS(Y)=S
155 PRINT#15,"B-P";2;0
156 PRINT#2,K$;CHR$(LN(Z));
157 PRINT#15,"U2";2;0;T1;S1:GOSUB 229
158 ZZ$=""
159 FOR X=1 TO 6:ZZ$=ZZ$+CHR$(TS(X))+CHR$(SS(X)):NEXT X
160 FOR X=1 TO SS
161 A$=CHR$(X-1)+CHR$(RL(Z))+ZZ$
162 FOR XZ=1 TO 120:A$=A$+CHR$(BT(X,XZ))+CHR$(BS(X,XZ)):NEXT XZ
163 PRINT#15,"U1";2;0;TS(X);SS(X):GOSUB 229
164 P=2:IF X=SS THEN A$=CHR$(RR*2+15)+A$:P=1
165 PRINT#15,"B-P";2;P
166 PRINT#2,A$;
167 PRINT#15,"U2";2;0;TS(X);SS(X):GOSUB 229
168 NEXT X
169 FOR X=1 TO SS:TS(X)=0:SS(X)=0
170 FOR XZ=1 TO 120:BT(X,XZ)=0:BS(X,XZ)=0
171 NEXT XZ,X
172 Y=Z+1
173 IF BL(Y)<>0 THEN T=FT(Y):S=FS(Y):GOTO 93
174 Y=Y+1:IF Y<N+1 THEN 173
175 GOTO 93
176 PRINT#15,"U1";2;0;T;S:GOSUB 229:PRINT#15,"B-P";2;0:GOSUB 229
177 POKE 251,0:POKE 252,193:SYSTEM:T=PEEK(BA):S=PEEK(BA+1):RETURN
178 IF C=0 THEN T$="DEL"
179 IF C=1 THEN T$="SEQ"
180 IF C=2 THEN T$="PRG"
181 IF C=3 THEN T$="USR"
182 IF C=4 THEN T$="REL"
183 RETURN
184 FOR Y=BA+5+ZX TO BA+20+ZX
185 D$=CHR$(PEEK(Y))
186 F$=F$+D$:NEXT Y:RETURN
187 H=PEEK(BA+31+ZX)*256+PEEK(BA+30+ZX)
188 RT=PEEK(BA+21+ZX):RS=PEEK(BA+22+ZX):RL=PEEK(BA+23+ZX):RETURN
189 N=N+1
190 PN$(N)=F$
191 FT(N)=DT
192 FS(N)=DS
193 BL(N)=H
194 BT=BT+H
195 T$(N)=LEFT$(T$,1)
196 RT(N)=RT
197 RS(N)=RS
198 RL(N)=RL
199 RETURN
200 D=16-LEN(PN$(Z))
201 IF D=0 THEN 205
202 FOR Y=1 TO D
203 A$=A$+CHR$(160)
204 NEXT Y
205 B$=LEFT$(C$,3)
206 RETURN
207 A$=A$+B$+C$
208 H=INT(BL(Z)/256)
209 L=BL(Z)-(H*256)
210 A$=A$+CHR$(L)+CHR$(H)
211 IF X<>7 THEN A$=A$+K$+K$
212 Z=Z+1:RETURN
213 IF LEN(A$)<254 THEN A$=A$+K$:GOTO 213
214 S=ND
215 ND=ND+3
216 IF ND>18 THEN ND=ND-17
217 PRINT#15,"B-P";2;0
218 IF Z>N THEN PRINT#2,K$;CHR$(255);:GOTO 220
219 PRINT#2,CHR$(18);CHR$(ND);
220 PRINT#2,A$;
221 PRINT#15,"U2";2;0;18;S:GOSUB 229
222 RETURN
223 PRINT#15,"U1";2;0;T;S:GOSUB 229
224 PRINT#15,"B-P";2;0:GOSUB 229
225 RETURN
226 PRINT "FILE LENGTH ERROR"
227 CLOSE 2:CLOSE 15
228 POKE 198,0:WAIT 198,1:END
229 INPUT#15,E,E$,ET,ES:IF E>19 THEN CLOSE 2:CLOSE 3:GOTO 231
230 RETURN
231 PRINT E;E$;ET;ES
232 END
233 IF BL(Z)<122 THEN SS=1:RETURN
234 IF BL(Z)<243 THEN SS=2:RETURN
235 IF BL(Z)<364 THEN SS=3:RETURN
236 IF BL(Z)<485 THEN SS=4:RETURN
237 IF BL(Z)<606 THEN SS=5:RETURN
238 SS=6:RETURN
239 A$="":FOR X=1 TO 28:GET#2,B$:A$=A$+B$:NEXT:GET#2,B$
240 B$="*LYNX":X=1:RZ=0
241 IF MID$(A$,X,5)=B$ THEN RZ=1:RETURN
242 IF MID$(A$,X,4)="LYNX" THEN RETURN
243 X=X+1:IF X<22 THEN 241
244 CLOSE 2:CLOSE 15
245 PRINT "NOT A LYNXED FILE"
246 POKE 198,0:WAIT 198,1:END
247 OPEN 15,SD,15,"I0":GOSUB 229
248 OPEN 2,SD,2,"0:"+PN$(1)+","+T$(1)+",R":GOSUB 229
249 GET#2,A$:A=ASC(A$+K$)
250 GET#2,A$:B=ASC(A$+K$)
251 ZR=0:IF (A=1 AND B=8) THEN ZR=1
252 CLOSE 2:CLOSE 15:RETURN
253 DATA 162,2,32,198,255,160,0,32,228,255
254 DATA 145,251,200,208,248,32,204,255,96,162
255 DATA 2,32,198,255,162,25,160,0,32,228
256 DATA 255,145,251,200,202,208,247,32,204,255
257 DATA 96
258 DATA 1,8,91,8,10,0,151,53,51,50
259 DATA 56,48,44,48,58,151,53,51,50,56
260 DATA 49,44,48,58,151,54,52,54,44,194
261 DATA 40,49,54,50,41,58,153,34,147,17
262 DATA 17,17,17,17,17,17,17,34,58,153
263 DATA 34,32,32,32,32,32,85,83,69,32
264 DATA 76,89,78,88,32,84,79,32,68,73
265 DATA 83,83,79,76,86,69,32,84,72,73
266 DATA 83,32,70,73,76,69,34,58,137,49
267 DATA 48,0,0,0